import Vue from 'vue'
import App from './App.vue'
import router from './router'
// 执行element.js文件
// import './plugins/element.js'
// 导入字体图标
import './assets/fonts/iconfont.css'
// 导入全局样式表
import './assets/css/global.css'
import TreeTable from 'vue-table-with-tree-grid'
// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'
// import 'quill/dist/quill.core.css' // import styles
// import 'quill/dist/quill.snow.css' // for snow theme
// import 'quill/dist/quill.bubble.css' // for bubble theme
// 导入日期格式化插件
import moment from 'moment'
// 导入nprogress进度条js及css文件
import NProgress from 'nprogress'
// import 'nprogress/nprogress.css'
// 导入axios
import axios from 'axios'
// 设置基准路径————所有请求的基准路径都是一样的
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
// 设置请求拦截器
axios.interceptors.request.use(config => {
  NProgress.start()
  // 设置请求头信息  将token信息添加到请求头中
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 返回config
  return config
})
// 设置响应拦截器
axios.interceptors.response.use(config => {
  NProgress.done()
  if (config.data.meta.msg === '无效token') {
    // 根相对路径
    location.href = '/#/login'
  }
  // 返回config
  return config
})
// 将axios挂载到Vue构造函数的原型对象中  这样各个组件都可以使用了
Vue.prototype.$http = axios
// 将日期格式化插件挂载到Vue构造函数的原型对象中  这样各个组件都可以使用了
Vue.prototype.$moment = moment
Vue.config.productionTip = false
// 全局注册组件tree-table
Vue.component('tree-table', TreeTable)
// 全局注册富文本编辑器
Vue.use(VueQuillEditor)
// 定义全局过滤器————格式化日期
// Vue.filter('dateFormat', function (date, format) {
//   // 定义格式化时间函数
//   function dateFormat (date, format) {
//     if (typeof date === 'string') {
//       var mts = date.match(/(\/Date\((\d+)\)\/)/)
//       if (mts && mts.length >= 3) {
//         date = parseInt(mts[2])
//       }
//     }
//     date = new Date(date)
//     if (!date || date.toUTCString() === 'Invalid Date') {
//       return ''
//     }
//     var map = {
//       M: date.getMonth() + 1, // 月份
//       d: date.getDate(), // 日
//       h: date.getHours(), // 小时
//       m: date.getMinutes(), // 分
//       s: date.getSeconds(), // 秒
//       q: Math.floor((date.getMonth() + 3) / 3), // 季度
//       S: date.getMilliseconds() // 毫秒
//     }

//     format = format.replace(/([yMdhmsqS])+/g, function (all, t) {
//       var v = map[t]
//       if (v !== undefined) {
//         if (all.length > 1) {
//           v = '0' + v
//           v = v.substr(v.length - 2)
//         }
//         return v
//       } else if (t === 'y') {
//         return (date.getFullYear() + '').substr(4 - all.length)
//       }
//       return all
//     })
//     return format
//   }
//   return dateFormat(date, format)
// })
new Vue({
  // 将路由对象挂载到Vue实例中
  router,
  render: h => h(App)
}).$mount('#app')

// 测试
